package polymorphic;

public class Test {

    public static void main(String[] args) {

        SubA1 subA1 = new SubA1("subA1");
        SubA2 subA2 = new SubA2("subA2");

        //将子类的对象，传入形参是父类对象的方法，即父类对象的引用，可以接收子类对象
        Test test = new Test();
        test.call(subA1);
        test.call(subA2);


        BaseA baseSubA1 = new SubA1("base");
        baseSubA1.show();

        //SubA2 downSubA2 = (SubA2) baseSubA1;

        SubA1 downSubA1 = (SubA1) baseSubA1;
        downSubA1.show();
    }

    public void call(BaseA baseA){
        System.out.println("call " + baseA.name);
    }
}
